// 认证相关工具函数

/**
 * 检查是否已登录
 * @returns {Boolean} 是否已登录
 */
export const checkLogin = () => {
  const token = uni.getStorageSync('token');
  return !!token;
};

/**
 * 退出登录
 */
export const logout = () => {
  // 清除存储的token和其他用户信息
  uni.removeStorageSync('token');
  uni.removeStorageSync('userInfo');
  
  // 跳转到登录页
  redirectToLogin();
};

/**
 * 重定向到登录页
 */
export const redirectToLogin = () => {
  // 获取当前页面路径，用于登录后可能的重定向
  const pages = getCurrentPages();
  const currentPage = pages[pages.length - 1];
  const currentRoute = currentPage ? currentPage.route : '';
  
  // 如果当前已经在登录页，则不再跳转
  if (currentRoute.includes('login')) {
    return;
  }
  
  // 关闭所有页面，打开登录页
  uni.reLaunch({
    url: '/pages/login/login'
  });
};

/**
 * 处理响应中的token过期情况
 * @param {Object} res - 响应对象
 * @returns {Boolean} 是否处理了token过期
 */
export const handleTokenExpired = (res) => {
  // 检查是否是token过期或无效的情况
  // 根据您的API响应格式进行调整
  const isTokenExpired = 
    res.statusCode === 401 || 
    (res.data && res.data.code === 401) ||
    (res.data && res.data.message && typeof res.data.message === 'string' && 
     (res.data.message.includes('token') || 
      res.data.message.includes('Token') || 
      res.data.message.includes('认证') || 
      res.data.message.includes('登录') || 
      res.data.message.includes('授权')));
  
  if (isTokenExpired) {
    // 显示提示
    uni.showToast({
      title: '登录已过期，请重新登录',
      icon: 'none',
      duration: 2000
    });
    
    // 延迟执行登出操作，让用户看到提示
    setTimeout(() => {
      logout();
    }, 1500);
    
    return true;
  }
  
  return false;
};